IBM DB2 ডেটাবেস ম্যানেজমেন্ট সিস্টেমে ডেটা সংরক্ষণের জন্য বিভিন্ন Data Types এবং Constraints ব্যবহৃত হয়। Data Types ডেটার প্রকৃতি এবং বৈশিষ্ট্য নির্ধারণ করে, এবং Constraints ডেটার উপর শর্ত আরোপ করে, যা ডেটাবেসের ইন্টিগ্রিটি নিশ্চিত করে। এখানে DB2 এর প্রধান Data Types এবং Constraints সম্পর্কে বিস্তারিত আলোচনা করা হলো।
DB2 Data Types
DB2 ডেটাবেসে ডেটা সংরক্ষণের জন্য বিভিন্ন ধরণের ডেটা টাইপ ব্যবহার করা হয়, যা ডেটার প্রকৃতি (যেমন সংখ্যা, টেক্সট, তারিখ) নির্ধারণ করে। DB2-এ কয়েকটি প্রধান ডেটা টাইপ রয়েছে, যেগুলি ডেটাবেসে বিভিন্ন ধরনের ডেটা সংরক্ষণে ব্যবহৃত হয়।
১. Numeric Data Types
INTEGER: পূর্ণসংখ্যা (whole numbers) সংরক্ষণ করার জন্য ব্যবহৃত হয়। এটি ৪ বাইট স্পেস ব্যবহার করে এবং এর পরিসীমা -2,147,483,648 থেকে 2,147,483,647 পর্যন্ত।
CREATE TABLE employees ( employee_id INTEGER );DECIMAL/NUMERIC: দশমিক সংখ্যাগুলি (fixed-point numbers) সংরক্ষণ করতে ব্যবহৃত হয়। এটি সঠিক দশমিক স্থান নির্দিষ্ট করতে সক্ষম।
CREATE TABLE products ( price DECIMAL(10, 2) );এখানে
DECIMAL(10, 2)মানে দশটি সংখ্যা রাখা যাবে এবং দুটি দশমিক স্থান থাকবে।FLOAT/REAL/DOUBLE: ভাসমান দশমিক সংখ্যা (floating-point numbers) সংরক্ষণ করার জন্য ব্যবহৃত হয়।
CREATE TABLE measurements ( weight DOUBLE );
২. Character Data Types
CHAR: নির্দিষ্ট দৈর্ঘ্যের স্ট্রিং (fixed-length string) সংরক্ষণ করতে ব্যবহৃত হয়। এটি 1 থেকে 32,672 ক্যারেক্টার পর্যন্ত সমর্থন করে।
CREATE TABLE employees ( first_name CHAR(50) );VARCHAR: পরিবর্তনশীল দৈর্ঘ্যের স্ট্রিং (variable-length string) সংরক্ষণ করতে ব্যবহৃত হয়। এটি একটি সর্বোচ্চ দৈর্ঘ্য নির্দিষ্ট করে।
CREATE TABLE employees ( last_name VARCHAR(100) );CLOB (Character Large Object): বড় পরিসরের টেক্সট ডেটা সংরক্ষণ করতে ব্যবহৃত হয়।
CREATE TABLE articles ( content CLOB );
৩. Date and Time Data Types
DATE: শুধুমাত্র তারিখ (year, month, day) সংরক্ষণ করে।
CREATE TABLE events ( event_date DATE );TIME: সময় (hour, minute, second) সংরক্ষণ করতে ব্যবহৃত হয়।
CREATE TABLE meetings ( start_time TIME );TIMESTAMP: তারিখ এবং সময় (year, month, day, hour, minute, second) সংরক্ষণ করে।
CREATE TABLE logs ( created_at TIMESTAMP );
৪. Binary Data Types
BLOB (Binary Large Object): বড় আকারের বাইনারি ডেটা (যেমন ছবি, ভিডিও, বা অন্যান্য ফাইল) সংরক্ষণ করতে ব্যবহৃত হয়।
CREATE TABLE media ( file_data BLOB );
৫. Boolean Data Type
BOOLEAN: সত্য (TRUE) অথবা মিথ্যা (FALSE) মান সংরক্ষণ করার জন্য ব্যবহৃত হয়।
CREATE TABLE users ( is_active BOOLEAN );
DB2 Constraints
DB2-এ Constraints ব্যবহৃত হয় ডেটাবেসের ডেটার ওপর শর্ত আরোপ করতে, যাতে ডেটার সঠিকতা এবং ইন্টিগ্রিটি নিশ্চিত করা যায়। এটি ডেটার মান এবং সম্পর্ক নির্ধারণ করে, যেমন কোন কলামে NULL মান থাকতে পারে না, বা কোন কলাম ইউনিক হতে হবে।
১. PRIMARY KEY Constraint
PRIMARY KEY কনস্ট্রেইন্ট ব্যবহার করা হয় টেবিলের একটি কলামে এমন একটি সুনির্দিষ্ট মান নিশ্চিত করতে, যা অদ্বিতীয় (unique) এবং NULL মান গ্রহণ করতে পারে না। এটি টেবিলের প্রতিটি রেকর্ডের জন্য একটি সুনির্দিষ্ট চিহ্ন প্রদান করে।
উদাহরণ:
CREATE TABLE employees (
employee_id INTEGER PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50)
);
এটি employee_id কে PRIMARY KEY হিসেবে নির্ধারণ করে।
২. FOREIGN KEY Constraint
FOREIGN KEY কনস্ট্রেইন্ট অন্য একটি টেবিলের PRIMARY KEY অথবা UNIQUE কনস্ট্রেইন্টের সাথে সম্পর্ক স্থাপন করে। এটি ডেটার সম্পর্ক বজায় রাখে এবং referential integrity নিশ্চিত করে।
উদাহরণ:
CREATE TABLE orders (
order_id INTEGER PRIMARY KEY,
customer_id INTEGER,
FOREIGN KEY (customer_id) REFERENCES customers (customer_id)
);
এটি orders টেবিলের customer_id কলামকে customers টেবিলের customer_id কলামের সাথে সম্পর্কিত করে।
৩. UNIQUE Constraint
UNIQUE কনস্ট্রেইন্ট ব্যবহৃত হয় একটি কলামে ইউনিক মান নিশ্চিত করতে, অর্থাৎ একই মান পুনরাবৃত্তি হতে পারবে না। তবে, এটি NULL মান গ্রহণ করতে পারে।
উদাহরণ:
CREATE TABLE employees (
employee_id INTEGER PRIMARY KEY,
email VARCHAR(100) UNIQUE
);
এটি email কলামে ইউনিক মান থাকতে বাধ্য করবে।
৪. NOT NULL Constraint
NOT NULL কনস্ট্রেইন্ট নিশ্চিত করে যে একটি নির্দিষ্ট কলামে NULL মান থাকতে পারবে না। এটি ডেটা পূর্ণতা নিশ্চিত করে।
উদাহরণ:
CREATE TABLE employees (
employee_id INTEGER PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL
);
এটি first_name এবং last_name কলামগুলোতে NULL মান গ্রহণ করতে দেবে না।
৫. CHECK Constraint
CHECK কনস্ট্রেইন্ট একটি শর্ত আরোপ করে, যাতে কলামের মান একটি নির্দিষ্ট শর্ত পূরণ করতে হয়। এটি ডেটার মান যাচাই করতে ব্যবহৃত হয়।
উদাহরণ:
CREATE TABLE employees (
employee_id INTEGER PRIMARY KEY,
age INTEGER CHECK (age > 18)
);
এটি age কলামের জন্য একটি শর্ত আরোপ করে, যেখানে বয়স ১৮ বছরের বেশি হতে হবে।
৬. DEFAULT Constraint
DEFAULT কনস্ট্রেইন্ট একটি কলামের জন্য একটি ডিফল্ট মান নির্ধারণ করে, যদি ব্যবহারকারী কোনো মান না দেয়।
উদাহরণ:
CREATE TABLE employees (
employee_id INTEGER PRIMARY KEY,
status VARCHAR(20) DEFAULT 'Active'
);
এটি status কলামে ডিফল্ট মান হিসেবে 'Active' নির্ধারণ করে।
৭. DROP Constraints
কোনো কনস্ট্রেইন্ট মুছে ফেলতে DROP কনস্ট্রেইন্ট ব্যবহার করা হয়।
উদাহরণ:
ALTER TABLE employees DROP CONSTRAINT constraint_name;
সারসংক্ষেপ
DB2-এ Data Types এবং Constraints ডেটাবেসের কার্যকারিতা এবং নিরাপত্তা নিশ্চিত করতে গুরুত্বপূর্ণ ভূমিকা পালন করে। Data Types ডেটার প্রকৃতি নির্ধারণ করে এবং Constraints ডেটার সঠিকতা এবং ইন্টিগ্রিটি নিশ্চিত করে। এই দুইটি উপাদান একত্রে DB2 ডেটাবেসকে আরও শক্তিশালী এবং নির্ভরযোগ্য করে তোলে।
IBM DB2 একটি শক্তিশালী ডেটাবেস ম্যানেজমেন্ট সিস্টেম (DBMS) যা বিভিন্ন ধরনের ডেটা সংরক্ষণের জন্য বিস্তৃত Data Types সমর্থন করে। ডেটাবেসে ডেটা সঠিকভাবে স্টোর এবং ম্যানেজ করতে বিভিন্ন ধরনের ডেটা টাইপ ব্যবহৃত হয়, যেমন স্ট্রিং, ইনটিজার, ডেট, টাইম, বুলিয়ান ইত্যাদি। DB2 এ সমর্থিত ডেটা টাইপগুলি ডেটাবেস ডিজাইন এবং কুয়েরি অপ্টিমাইজেশন প্রক্রিয়ায় গুরুত্বপূর্ণ ভূমিকা পালন করে।
DB2 এ প্রধান Data Types
1. Character Data Types
এই ধরনের ডেটা টাইপ স্ট্রিং ডেটা সংরক্ষণ করতে ব্যবহৃত হয়।
- CHAR(n): নির্দিষ্ট দৈর্ঘ্যের ফিক্সড-লেংথ স্ট্রিং। যদি স্ট্রিং এর দৈর্ঘ্য কম হয় তবে এটি পূর্ণ করার জন্য প্যাডিং করা হয়।
- উদাহরণ:
CHAR(10)- ১০ ক্যারেক্টার দৈর্ঘ্যের স্ট্রিং।
- উদাহরণ:
- VARCHAR(n): পরিবর্তনশীল দৈর্ঘ্যের স্ট্রিং। এটি ডেটাবেসে স্টোর করা স্ট্রিংয়ের প্রকৃত দৈর্ঘ্য অনুযায়ী স্থান ব্যবহার করে।
- উদাহরণ:
VARCHAR(50)- ৫০ ক্যারেক্টারের মধ্যে যেকোনো দৈর্ঘ্যের স্ট্রিং।
- উদাহরণ:
- CLOB: বড় স্ট্রিং ডেটার জন্য ব্যবহৃত হয়, বিশেষ করে টেক্সট ডেটা যেখানে কয়েক হাজার বা তার অধিক ক্যারেক্টার থাকতে পারে।
- উদাহরণ: ব্যবহারকারীর মন্তব্য বা প্রবন্ধের মতো বড় ডেটা।
2. Numeric Data Types
এই ধরনের ডেটা টাইপ সংখ্যাগুলি স্টোর করতে ব্যবহৃত হয়।
- INTEGER: একটি পূর্ণসংখ্যা ডেটা টাইপ যা -2,147,483,648 থেকে 2,147,483,647 পর্যন্ত মান ধারণ করতে পারে।
- উদাহরণ:
INTEGER- বয়স, সংখ্যা বা কাউন্ট মান।
- উদাহরণ:
- SMALLINT: ছোট পূর্ণসংখ্যা ডেটা টাইপ, যা -32,768 থেকে 32,767 পর্যন্ত মান ধারণ করতে পারে।
- উদাহরণ:
SMALLINT- স্টেট কোড বা অন্যান্য ছোট পরিসরের সংখ্যা।
- উদাহরণ:
- BIGINT: বড় পূর্ণসংখ্যা ডেটা টাইপ, যা বিশাল সংখ্যা ধারণ করতে সক্ষম, যেমন ব্যাংক ব্যালেন্স বা বড় পরিসরের গণনা।
- উদাহরণ:
BIGINT- জাতীয় সঞ্চয় বা মোট পণ্য উৎপাদন সংখ্যা।
- উদাহরণ:
- DECIMAL(p,s): সঠিক দশমিক সংখ্যা ধারণ করতে ব্যবহৃত হয়, যেখানে
pহল প্রিসিশন এবংsহল স্কেল। এটি অর্থনৈতিক হিসাবের জন্য ব্যবহৃত হয়।- উদাহরণ:
DECIMAL(10,2)- ১০ অংকের সংখ্যা, যার মধ্যে ২ অংক দশমিকের পর থাকবে (যেমন 12345.67)।
- উদাহরণ:
- NUMERIC(p,s): DECIMAL এর মতো, তবে এটি আরও নির্ভুলতার জন্য ব্যবহৃত হতে পারে। একইভাবে প্রিসিশন (p) এবং স্কেল (s) সংজ্ঞায়িত করা হয়।
3. Date and Time Data Types
ডেটা এবং সময় সম্পর্কিত মান ধারণ করতে ব্যবহৃত ডেটা টাইপ।
- DATE: শুধুমাত্র তারিখ (YYYY-MM-DD) ধারণ করে।
- উদাহরণ:
DATE- 2024-11-27
- উদাহরণ:
- TIME: শুধুমাত্র সময় (HH:MM:SS) ধারণ করে।
- উদাহরণ:
TIME- 15:30:00
- উদাহরণ:
- TIMESTAMP: তারিখ এবং সময় একসাথে ধারণ করে (YYYY-MM-DD HH:MM:SS)।
- উদাহরণ:
TIMESTAMP- 2024-11-27 15:30:00
- উদাহরণ:
- TIME WITH TIMEZONE: সময় এবং টাইমজোন ধারণ করে, যা নির্দিষ্ট একটি টাইমজোনে সময় প্রদান করে।
- উদাহরণ:
TIME WITH TIMEZONE- 15:30:00 +05:00
- উদাহরণ:
- TIMESTAMP WITH TIMEZONE: টাইমস্ট্যাম্প এবং টাইমজোনের সাথে সংশ্লিষ্ট সময় ধারণ করে।
- উদাহরণ:
TIMESTAMP WITH TIMEZONE- 2024-11-27 15:30:00 +05:00
- উদাহরণ:
4. Binary Data Types
বাইনারি ডেটা স্টোর করার জন্য ব্যবহৃত ডেটা টাইপ।
- BINARY(n): নির্দিষ্ট দৈর্ঘ্যের বাইনারি ডেটা।
- উদাহরণ:
BINARY(10)- ১০ বাইটের বাইনারি ডেটা।
- উদাহরণ:
- VARBINARY(n): পরিবর্তনশীল দৈর্ঘ্যের বাইনারি ডেটা।
- উদাহরণ:
VARBINARY(50)- ৫০ বাইটের মধ্যে যেকোনো দৈর্ঘ্যের বাইনারি ডেটা।
- উদাহরণ:
- BLOB: বড় বাইনারি ডেটার জন্য ব্যবহৃত, যেমন ছবি বা অডিও ফাইল।
- উদাহরণ: ব্যবহারকারীর ছবির জন্য বা মিউজিক ফাইল।
5. Boolean Data Type
- BOOLEAN: সত্য বা মিথ্যা (TRUE/FALSE) মান ধারণ করে।
- উদাহরণ:
BOOLEAN- একক সত্য বা মিথ্যা মানের জন্য।
- উদাহরণ:
6. XML Data Type
- XML: XML ডেটা ফরম্যাটের তথ্য ধারণ করতে ব্যবহৃত হয়। এটি সাধারণত ওয়েব সার্ভিস এবং অন্যান্য XML-বেসড অ্যাপ্লিকেশনে ব্যবহৃত হয়।
- উদাহরণ:
XML- ওয়েব সার্ভিস থেকে প্রাপ্ত XML ডেটা।
- উদাহরণ:
DB2 এ সমর্থিত অন্যান্য Data Types
1. ROWID: এটি ডেটাবেসের প্রতিটি রেকর্ডের জন্য একটি অনন্য আইডি ধারণ করে, যা নির্দিষ্ট টেবিলের রেকর্ড শনাক্ত করতে ব্যবহৃত হয়।
2. ARRAY: একাধিক মান ধারণ করতে সক্ষম এমন ডেটা টাইপ। এটি বিশেষ করে যেখানে একাধিক মানের দরকার হয়, যেমন স্টুডেন্টদের রোল নম্বর।
3. User-Defined Data Types (UDT): DB2 আপনাকে কাস্টম ডেটা টাইপ তৈরি করতে দেয়, যা আপনার ডেটাবেসের জন্য বিশেষভাবে উপযুক্ত হতে পারে।
সারসংক্ষেপ
DB2 এর সমর্থিত ডেটা টাইপগুলি ডেটাবেস ডিজাইন এবং কুয়েরি অপ্টিমাইজেশন প্রক্রিয়ার একটি গুরুত্বপূর্ণ অংশ। DB2 বিভিন্ন ধরনের ডেটা টাইপ যেমন Character, Numeric, Date and Time, Binary, Boolean, XML, এবং অন্যান্য বিশেষ ডেটা টাইপ সমর্থন করে, যা ডেটাবেসে বিভিন্ন ধরনের তথ্য সংরক্ষণ ও পরিচালনা করতে সহায়তা করে। সঠিক ডেটা টাইপ নির্বাচন ডেটাবেসের কার্যকারিতা, নিরাপত্তা, এবং ডেটা এক্সেসের গতি উন্নত করে।
DB2 ডেটাবেসে Null এবং Not Null কনফিগারেশনগুলি ডেটাবেস টেবিলের কলামের জন্য ব্যবহৃত কনস্ট্রেইন্ট (constraints)। এগুলি ডেটা সংরক্ষণের জন্য সীমাবদ্ধতা তৈরি করে, যা নির্ধারণ করে যে একটি নির্দিষ্ট কলামে শূন্য (NULL) মান গ্রহণ করা যাবে কি না। এই কনফিগারেশনগুলি ডেটাবেসের ডেটা ইন্টিগ্রিটি এবং সঠিকতা বজায় রাখতে সহায়ক।
Null কি?
Null একটি বিশেষ মান যা কোনো ডেটা বা মানের অনুপস্থিতি নির্দেশ করে। এটি শূন্য (0), খালি স্ট্রিং (""), বা অন্য কোন নির্দিষ্ট মানের সমতুল্য নয়। Null মান বোঝায় যে ডেটা পাওয়া যায়নি বা প্রাসঙ্গিক নয়।
Null ব্যবহারের কিছু বৈশিষ্ট্য:
- এটি অজানা বা অনুপস্থিত ডেটাকে প্রতিনিধিত্ব করে।
- Null মানকে সমান (=
=) বা অসমান (<>/!=) হিসেবে ব্যবহার করা যায় না। এর পরিবর্তে IS NULL বা IS NOT NULL কন্ডিশন ব্যবহার করতে হয়। - কোনো ক্ষেত্রে, একটি কলামে Null মান থাকা প্রয়োজন হতে পারে, যেমন যেখানে ডেটা পরবর্তীতে আসবে।
Not Null কি?
Not Null হল একটি কনস্ট্রেইন্ট যা একটি কলামে Null মান প্রবেশ নিষিদ্ধ করে। যখন একটি কলামে Not Null কনস্ট্রেইন্ট দেওয়া হয়, তখন ওই কলামে শূন্য (NULL) মান রাখা যাবে না। অর্থাৎ, প্রতিটি রেকর্ডে ওই কলামে অবশ্যই একটি মান থাকা প্রয়োজন।
Not Null ব্যবহারের কিছু বৈশিষ্ট্য:
- এটি ডেটাবেসে ডেটার পূর্ণতা এবং নির্ভরযোগ্যতা নিশ্চিত করে।
- যদি কোনো কলামে Not Null কনস্ট্রেইন্ট সেট করা থাকে, তবে সেই কলামে ইনসার্ট বা আপডেট করার সময় শূন্য (NULL) মান প্রদান করা যাবে না।
DB2-এ Null এবং Not Null কনফিগারেশন
DB2-এ কলাম তৈরি করার সময় Null এবং Not Null কনফিগারেশনগুলি ব্যবহার করা হয়। এই কনফিগারেশনগুলি CREATE TABLE এবং ALTER TABLE কমান্ডের মাধ্যমে নির্ধারণ করা যায়।
1. Null কনফিগারেশন
যখন একটি কলামে Null মান থাকতে পারে, তখন সেটা ডিফল্টভাবেই অনুমোদিত থাকে। নিচে একটি উদাহরণ দেওয়া হলো:
CREATE TABLE Employee (
EmployeeID INT,
EmployeeName VARCHAR(100),
HireDate DATE
);
এই উদাহরণে, EmployeeName এবং HireDate কলামগুলিতে Null মান থাকতে পারে, কারণ এগুলোর জন্য Not Null কনস্ট্রেইন্ট নেই।
2. Not Null কনফিগারেশন
কোনো কলামে Not Null কনস্ট্রেইন্ট অ্যাপ্লাই করার জন্য, আপনি NOT NULL কনস্ট্রেইন্ট ব্যবহার করবেন:
CREATE TABLE Employee (
EmployeeID INT NOT NULL,
EmployeeName VARCHAR(100) NOT NULL,
HireDate DATE NOT NULL
);
এখানে, EmployeeID, EmployeeName, এবং HireDate কলামগুলিতে Not Null কনস্ট্রেইন্ট দেওয়া হয়েছে, যার মানে হল এই কলামগুলোতে কোনো শূন্য (NULL) মান থাকতে পারবে না।
3. Null এবং Not Null কনফিগারেশন পরবর্তী সময় আপডেট করা
এটা মনে রাখতে হবে যে Not Null কনস্ট্রেইন্ট প্রয়োগ করার পর, ওই কলামে শূন্য (NULL) মান থাকা কোনো রেকর্ড আপডেট করা যাবে না। তবে, আপনি ALTER TABLE কমান্ডের মাধ্যমে একটি কলামে Null বা Not Null কনস্ট্রেইন্ট পরিবর্তন করতে পারেন।
Not Null কনস্ট্রেইন্ট যোগ করা:
ALTER TABLE Employee
MODIFY COLUMN EmployeeName VARCHAR(100) NOT NULL;
Null কনস্ট্রেইন্ট যোগ করা:
ALTER TABLE Employee
MODIFY COLUMN EmployeeName VARCHAR(100) NULL;
4. Null এবং Not Null কনস্ট্রেইন্ট সঠিকভাবে ব্যবহার করার জন্য টিপস
- যদি একটি কলামে একটি মান নিশ্চিতভাবে থাকতে হবে, তবে Not Null কনস্ট্রেইন্ট ব্যবহার করুন। উদাহরণস্বরূপ, EmployeeID কলামে শূন্য মান (NULL) গ্রহণযোগ্য নয়, কারণ এটি একটি ইউনিক শনাক্তকারী হতে হবে।
- যখন কোনো মান অজানা বা অনুপস্থিত হতে পারে, তখন Null কনস্ট্রেইন্ট ব্যবহার করুন, যেমন EmployeeAddress কলাম, যেখানে কিছু কর্মচারীর ঠিকানা না থাকতে পারে।
- ডেটাবেসের পারফরম্যান্স অপটিমাইজেশনে Not Null কনস্ট্রেইন্ট সাহায্য করতে পারে, কারণ Null চেকিং প্রক্রিয়া অতিরিক্ত রিসোর্স গ্রহণ করতে পারে।
সারসংক্ষেপ
Null এবং Not Null কনস্ট্রেইন্টগুলি DB2-তে ডেটার সঠিকতা এবং পূর্ণতা বজায় রাখতে সাহায্য করে। Null কনস্ট্রেইন্ট একটি কলামে শূন্য মান গ্রহণ করার অনুমতি দেয়, যখন Not Null কনস্ট্রেইন্ট শূন্য মান নিষিদ্ধ করে। এই কনফিগারেশনগুলির সঠিক ব্যবহার ডেটাবেসের ডেটা ইন্টিগ্রিটি এবং কার্যকারিতা নিশ্চিত করতে অত্যন্ত গুরুত্বপূর্ণ।
Constraints হল ডেটাবেসের একটি অত্যন্ত গুরুত্বপূর্ণ অংশ যা ডেটার অখণ্ডতা (integrity) এবং সঠিকতা (accuracy) নিশ্চিত করতে সাহায্য করে। Unique এবং Check constraints দুটি গুরুত্বপূর্ণ কনস্ট্রেইন্ট যা ডেটাবেস টেবিলের ডেটা সঠিকভাবে সংগঠিত ও বৈধ রাখতে ব্যবহৃত হয়। এখানে এই কনস্ট্রেইন্টগুলির ব্যবহার এবং সুবিধা সম্পর্কে বিস্তারিত আলোচনা করা হলো।
Unique Constraint
Unique Constraint একটি কনস্ট্রেইন্ট যা একটি কলামে ডুপ্লিকেট মান (duplicate values) এড়াতে সাহায্য করে। এটি নিশ্চিত করে যে কোনো নির্দিষ্ট কলামে প্রতিটি মান অনন্য (unique) হবে, অর্থাৎ একই মান একাধিক রেকর্ডে থাকতে পারে না।
বৈশিষ্ট্য:
- ডুপ্লিকেট মান নিষিদ্ধ: Unique কনস্ট্রেইন্ট ব্যবহার করলে ঐ কলামের জন্য ডুপ্লিকেট মান প্রবেশ করতে পারবেনা।
- NULL অনুমোদিত: এক্ষেত্রে, কলামে NULL মান থাকতে পারে (কিছু RDBMS-এ একাধিক NULL মানের অনুমতি থাকে) তবে NULL এবং অন্যান্য মানের তুলনা করা হয় না।
- একাধিক Unique কনস্ট্রেইন্ট: একেক টেবিলে একাধিক Unique কনস্ট্রেইন্ট ব্যবহার করা যেতে পারে, এবং প্রতিটি কলামের জন্য আলাদা আলাদা ইনডেক্স তৈরি হয়।
উদাহরণ:
ধরা যাক, আপনি একটি Customers টেবিল তৈরি করছেন, যেখানে প্রতিটি Email অবশ্যই অনন্য (unique) হবে। এই ক্ষেত্রে Email কলামে Unique কনস্ট্রেইন্ট ব্যবহার করা হবে।
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY,
CustomerName VARCHAR(100),
Email VARCHAR(100) UNIQUE
);
এখানে, Email কলামে Unique কনস্ট্রেইন্ট নির্ধারণ করা হয়েছে, যার ফলে এই কলামে একই ইমেইল একাধিক বার থাকতে পারবে না।
Check Constraint
Check Constraint হল একটি কনস্ট্রেইন্ট যা টেবিলের কলামে ডেটা প্রবেশের আগে নির্দিষ্ট শর্ত বা নিয়ম বাধ্যতামূলক করে। এই কনস্ট্রেইন্টটি কলামের মান যাচাই করে এবং শুধুমাত্র সেই মানগুলি অনুমোদন করে যা নির্ধারিত শর্ত পূর্ণ করে।
বৈশিষ্ট্য:
- শর্ত যাচাই: Check কনস্ট্রেইন্ট একটি শর্ত ব্যবহার করে ডেটার বৈধতা নিশ্চিত করে। এই শর্তটি কলামের মানের উপর ভিত্তি করে হতে পারে (যেমন, কোনো সংখ্যা শুধুমাত্র ইতিবাচক হতে হবে, বা বয়স ১৮ বছরের বেশি হতে হবে ইত্যাদি)।
- ডেটার অখণ্ডতা নিশ্চিতকরণ: এটি ডেটার অখণ্ডতা নিশ্চিত করতে ব্যবহৃত হয়, যেমন গ্রাহকের বয়স ১৮ এর নিচে হতে পারে না।
- একাধিক শর্ত: একাধিক শর্ত ব্যবহার করে একটি কলামে Check কনস্ট্রেইন্ট প্রয়োগ করা যেতে পারে।
উদাহরণ:
ধরা যাক, আপনি একটি Employees টেবিল তৈরি করছেন যেখানে Age কলামে কর্মচারীর বয়স ১৮ বছরের বেশি হতে হবে। এই শর্তটি Check কনস্ট্রেইন্ট দিয়ে নির্ধারণ করা হবে।
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
EmployeeName VARCHAR(100),
Age INT CHECK (Age >= 18)
);
এখানে, Age কলামে Check Constraint দেওয়া হয়েছে, যার মাধ্যমে নিশ্চিত করা হচ্ছে যে, কর্মচারীর বয়স ১৮ বছরের নিচে হবে না। এই শর্তটি ভঙ্গ করলে ডেটা এন্ট্রি সম্ভব হবে না।
Unique এবং Check Constraints এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Unique Constraint | Check Constraint |
|---|---|---|
| কাজ | কলামে ডুপ্লিকেট মান প্রতিরোধ করে। | কলামে নির্দিষ্ট শর্ত বা মান যাচাই করে। |
| নাল মান | NULL মান অনুমোদিত (বেশিরভাগ ক্ষেত্রে)। | NULL মান ব্যবহার করা যাবে, তবে শর্তের উপর নির্ভর করে। |
| প্রকার | একটি কলামে শুধুমাত্র একক মান থাকতে পারে। | কলামের মান অবশ্যই একটি নির্দিষ্ট শর্ত পূর্ণ করতে হবে। |
| ব্যবহার | ডেটার এককতা নিশ্চিত করতে ব্যবহৃত হয়। | ডেটার বৈধতা এবং সঠিকতা নিশ্চিত করতে ব্যবহৃত হয়। |
ব্যবহারিক উদাহরণ
1. Unique Constraint:
ধরা যাক, আপনি একটি Student টেবিল তৈরি করছেন যেখানে StudentID এবং RollNo উভয়ই অনন্য হতে হবে।
CREATE TABLE Student (
StudentID INT PRIMARY KEY,
Name VARCHAR(100),
RollNo INT UNIQUE
);
এখানে, RollNo কলামে Unique কনস্ট্রেইন্ট দেওয়ার মাধ্যমে নিশ্চিত করা হচ্ছে যে, প্রতিটি ছাত্রের রোল নম্বর একক হবে এবং ডুপ্লিকেট রোল নম্বর প্রবেশ করতে পারবে না।
2. Check Constraint:
ধরা যাক, আপনি একটি Product টেবিল তৈরি করছেন যেখানে Price কলামের মান ১০০ এর বেশি হতে হবে। এটি Check কনস্ট্রেইন্ট ব্যবহার করে নির্ধারণ করা হবে।
CREATE TABLE Product (
ProductID INT PRIMARY KEY,
ProductName VARCHAR(100),
Price DECIMAL(10, 2) CHECK (Price > 100)
);
এখানে, Price কলামে Check Constraint ব্যবহার করা হয়েছে, যার মাধ্যমে নিশ্চিত করা হচ্ছে যে, প্রতিটি পণ্যের দাম ১০০ এর বেশি হবে।
সারসংক্ষেপ
- Unique Constraint ডেটাবেস টেবিলের একটি কলামে ডুপ্লিকেট মান প্রতিরোধ করে এবং প্রতিটি রেকর্ডের জন্য ইউনিক মানের নিশ্চয়তা প্রদান করে।
- Check Constraint একটি কলামে ডেটা প্রবেশের পূর্বে নির্দিষ্ট শর্ত যাচাই করে, যেমন বয়সের সীমা বা দাম নির্ধারণ করা।
- এই কনস্ট্রেইন্টগুলির মাধ্যমে ডেটাবেসে ডেটার অখণ্ডতা, সঠিকতা এবং মানের নিশ্চয়তা নিশ্চিত করা যায়।
DB2 ডেটাবেসে Data Validation এবং Integrity Enforcement ডেটার সঠিকতা, পূর্ণতা, এবং নির্ভরযোগ্যতা নিশ্চিত করার জন্য অত্যন্ত গুরুত্বপূর্ণ। DB2 অনেক ধরনের কনস্ট্রেইন্ট এবং ডেটা ভ্যালিডেশন ফিচার সরবরাহ করে, যা ডেটাবেসের মধ্যে সঠিক তথ্য সংরক্ষণে সহায়ক।
Data Validation
Data Validation হল একটি প্রক্রিয়া যা নিশ্চিত করে যে, ডেটা সঠিক, পূর্ণ, এবং নির্ভরযোগ্য। DB2 এ ডেটা ভ্যালিডেশন কনস্ট্রেইন্ট এবং বিভিন্ন বিধি ব্যবহার করে করা হয়।
DB2 এ Data Validation এর জন্য কিছু কনস্ট্রেইন্ট:
NOT NULL কনস্ট্রেইন্ট:
- এটি নিশ্চিত করে যে একটি নির্দিষ্ট কলামে কখনও
NULLমান থাকবে না। যদি আপনি চান যে একটি কলামে ডেটা থাকা বাধ্যতামূলক, তবেNOT NULLকনস্ট্রেইন্ট ব্যবহার করবেন।
CREATE TABLE employee ( id INT NOT NULL, name VARCHAR(100) NOT NULL, position VARCHAR(50) );- এটি নিশ্চিত করে যে একটি নির্দিষ্ট কলামে কখনও
CHECK কনস্ট্রেইন্ট:
CHECKকনস্ট্রেইন্টের মাধ্যমে আপনি কলামে যে ডেটা থাকবে তা একটি শর্ত পূরণ করতে হবে এমন একটি বিধি আরোপ করতে পারেন। উদাহরণস্বরূপ, যদি আপনি চান যেsalaryকলামে 0 বা তার কম মান থাকতে না পারে, তবে আপনি এই কনস্ট্রেইন্ট ব্যবহার করতে পারেন:
CREATE TABLE employee ( id INT, name VARCHAR(100), salary DECIMAL(10,2), CHECK (salary > 0) );UNIQUE কনস্ট্রেইন্ট:
- এটি নিশ্চিত করে যে একটি নির্দিষ্ট কলামে প্রতিটি মান অনন্য (unique) হবে। যদি আপনি চান যে
emailকলামে প্রতিটি মান অনন্য হতে হবে, তবেUNIQUEকনস্ট্রেইন্ট ব্যবহার করবেন:
CREATE TABLE employee ( id INT, name VARCHAR(100), email VARCHAR(100) UNIQUE );- এটি নিশ্চিত করে যে একটি নির্দিষ্ট কলামে প্রতিটি মান অনন্য (unique) হবে। যদি আপনি চান যে
PRIMARY KEY কনস্ট্রেইন্ট:
- একটি PRIMARY KEY কনস্ট্রেইন্ট ডেটাবেসের টেবিলে প্রতিটি রেকর্ডের জন্য একটি অনন্য শনাক্তকারী প্রদান করে। এটি একটি কলামে থাকা ডেটাকে সুনির্দিষ্টভাবে চিহ্নিত করতে সহায়ক:
CREATE TABLE employee ( id INT PRIMARY KEY, name VARCHAR(100) );FOREIGN KEY কনস্ট্রেইন্ট:
FOREIGN KEYকনস্ট্রেইন্ট দুটি টেবিলের মধ্যে সম্পর্ক স্থাপন করে। এটি নিশ্চিত করে যে একটি টেবিলের কোনো কলামে ডেটা অন্য একটি টেবিলের কনট্রোলড কলাম (যেমনPRIMARY KEY) এর সাথে সঙ্গতিপূর্ণ হবে। এটি ডেটার সম্পর্ক বজায় রাখতে সহায়ক।
CREATE TABLE department ( dept_id INT PRIMARY KEY, dept_name VARCHAR(50) ); CREATE TABLE employee ( emp_id INT PRIMARY KEY, dept_id INT, FOREIGN KEY (dept_id) REFERENCES department(dept_id) );
Integrity Enforcement
Data Integrity হল ডেটার সঠিকতা, এক্সাক্টনেস, এবং পূর্ণতা নিশ্চিত করা। DB2 ডেটাবেসে Integrity Enforcement ডেটার সঠিকতা এবং নির্ভরযোগ্যতা নিশ্চিত করতে ব্যবহৃত কনস্ট্রেইন্টস এবং অন্যান্য বিধি বাস্তবায়ন করে। Integrity Enforcement সাধারণত এই তিনটি প্রক্রিয়া অনুসরণ করে:
1. Entity Integrity
- Entity Integrity নিশ্চিত করে যে একটি টেবিলের প্রতিটি রেকর্ড (row) একটি ইউনিক (unique) শনাক্তকারী থাকবে, অর্থাৎ একটি
PRIMARY KEYথাকতে হবে। এটি ডেটাবেসের প্রতিটি রেকর্ডের অনন্যতা বজায় রাখে এবং ডুপ্লিকেট রেকর্ড তৈরি হতে বাধা দেয়।
2. Referential Integrity
- Referential Integrity নিশ্চিত করে যে একটি টেবিলের foreign key অন্য টেবিলের primary key এর সাথে সঠিকভাবে সম্পর্কযুক্ত। যদি একটি রেকর্ডকে মুছে ফেলা হয় বা আপডেট করা হয়, তবে cascade delete বা cascade update অপশন ব্যবহার করে তার সম্পর্কিত রেকর্ডগুলোকেও আপডেট বা মুছে ফেলা যেতে পারে।
- FOREIGN KEY কনস্ট্রেইন্ট দিয়ে রেফারেন্সিয়াল ইন্টিগ্রিটি প্রতিষ্ঠিত হয়:
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_id INT,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);
3. Domain Integrity
- Domain Integrity নিশ্চিত করে যে একটি কলামে ডেটার টাইপ সঠিক এবং একরূপ হবে, অর্থাৎ সেই কলামে যেসব ডেটা রাখা হবে, তা সঠিকভাবে নির্ধারিত ডেটা টাইপে থাকবে এবং সেই ডেটার মান নির্দিষ্ট সীমার মধ্যে থাকবে।
- যেমন, আপনি একটি
salaryকলামে শুধুমাত্র ধনাত্মক সংখ্যাগুলি রাখতে চাইলেCHECKকনস্ট্রেইন্ট ব্যবহার করা যেতে পারে:
CREATE TABLE employee (
id INT PRIMARY KEY,
name VARCHAR(100),
salary DECIMAL(10,2) CHECK (salary > 0)
);
DB2 এ Integrity Enforcement এর জন্য কিছু অতিরিক্ত টুল
Triggers:
- DB2 তে
Triggersব্যবহার করে আপনি বিশেষ কিছু ডেটা পরিবর্তনের উপর শর্ত আরোপ করতে পারেন। উদাহরণস্বরূপ, যখন একটি ডেটা ইনসার্ট, আপডেট বা ডিলিট হয়, তখন এটি অটোমেটিকভাবে একটি নির্দিষ্ট প্রক্রিয়া শুরু করতে পারে যা ডেটার ইন্টিগ্রিটি নিশ্চিত করবে।
CREATE TRIGGER salary_check BEFORE INSERT ON employee REFERENCING NEW AS new_row FOR EACH ROW BEGIN IF new_row.salary < 0 THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Salary must be greater than zero'; END IF; END;- DB2 তে
- Check Constraints:
- Check Constraints ব্যবহার করে আপনি আরও গভীরভাবে ডেটা ইন্টিগ্রিটি নিশ্চিত করতে পারেন। এটি একটি শর্ত প্রয়োগ করে, যা কোনও টেবিলের ডেটা একসাথে সঠিক হতে হবে তা নিশ্চিত করে।
সারসংক্ষেপ
DB2 ডেটাবেসে Data Validation এবং Integrity Enforcement হল ডেটার সঠিকতা, পূর্ণতা এবং নির্ভরযোগ্যতা নিশ্চিত করার জন্য ব্যবহৃত কৌশল এবং কনস্ট্রেইন্ট। NOT NULL, CHECK, UNIQUE, PRIMARY KEY, এবং FOREIGN KEY কনস্ট্রেইন্ট ব্যবহার করে আপনি ডেটা সঠিক এবং সুরক্ষিত রাখতে পারেন। Entity Integrity, Referential Integrity, এবং Domain Integrity নিশ্চিত করার মাধ্যমে DB2 ডেটাবেসে ডেটার সঠিকতা এবং সম্পর্ক বজায় রাখা হয়।
Read more